perm filename FSTUDP.FAI[RST,LCS] blob
sn#197657 filedate 1976-01-19 generic text, type T, neo UTF8
00100 TITLE FSTUDP ; ********* NOV 4,70 *********
00200 INTERNAL INTUDP,TOUDP,FINUDP,TOTAPE,FINTAP,BACKSP
00300 INTERNAL GETTAP,INTAPE,FSTMUS,PUTMUS,FINMUS
00400
00500 ; USE UDFAST.DMP[1,3] TO PLAY FROM UDP
00600
00700 FILUDP←←1 ;SET TO 0 FOR NON-FILE STRUCTURED UDP
00800 ;SET TO 1 FOR FILE STRUCTURED UDP
00900 MAXBLK←←=4998 ;=4999 IS USED BY SYSTEM FOR PASSWORD
00950 MAXBLK←←=400*=19-2 ;LAST BLOCK IS USED BY SYSTEM FOR PASSWORD
01000
01100 CH←12
01200 CH2←11
01300 BLKS←←=1
01400
01500 DEFINE ERROR (MSG)
01600 < JSA 16,.ERROR
01700 JUMP [ASCIZ/MSG/
01800 ]
01900 >
02000
02100 REGS: BLOCK 20
02200
02300 INTERNAL MTA1,INMTA1
02400 ;CALL MTA1
02500 MTA1: 0 ;CH2, READS MTA1.
02600 INIT CH2,617
02700 SIXBIT/MTA1/
02800 0
02900 ERROR <CAN'T INIT MTA1>
03000 JRA 16,0(16)
03100 ;CALL INMTA1(<ARRAY>,<NO. OF WORDS>)
03200 INMTA1: 0
03300 HRRZ 0,0(16)
03400 SUBI 0,1
03500 MOVEM 0,COM
03600 MOVN 0,@1(16)
03700 HRLM 0,COM
03800 INPUT CH2,COM
03900 STATZ CH2,740000
04000 ERROR <MAG TAPE READ ERROR>
04100 JRA 16,2(16)
04200
04300 ;CALL PUTMUS(<FILE>)
04400
04500 PUTMUS: 0 ;USES INTMUS,FSTMUS,FINMUS, CH2. WRITES ON 2314.
04600 MOVE 0,@0(16)
04700 MOVEM 0,FILNAM
04800 JSA 16,INTFIL
04900 MOVE 0,[SIXBIT/MUS/]
05000 MOVEM 0,DIR+1
05100 SETZM DIR+2
05200 SETZM DIR+3
05300 ENTER CH2,DIR
05400 ERROR <ENTER FAILED>
05500 JRA 16,1(16)
05600 DIR: BLOCK 4
05700
05800 ;CALL FSTMUS(<ARRAY>,<NO. OF WORDS>)
05900
06000 FSTMUS: 0
06100 HRRZ 0,0(16)
06200 SUBI 0,1
06300 MOVEM 0,COM
06400 MOVN 0,@1(16)
06500 HRLM 0,COM
06600 OUTPUT CH2,COM
06700 STATZ CH2,740000
06800 ERROR <WRITE ERROR>
06900 JRA 16,2(16)
07000
07100 ;CALL INTUDP
07200
07300 INTUDP: 0 ;USES TOUDP, FINUDP, CH2. WRITES ON UDP.
07400 INIT CH2,17
07500 SIXBIT/UDP/
07600 0
07700 ERROR <CAN'T INIT UDP>
07800 IFE FILUDP,<
07900 MOVEM BLKNUM
08000 MOVEI 1
08100 EXCH BLKNUM
08200 >
08300 IFN FILUDP,<
08400 IN CH2,[IOWD 40,UDPBUF
08500 0]
08600 CAIA
08700 ERROR <CAN'T READ UDP BITMAP>
08800 SKIPN 1,UDPBUF+20 ;IS THERE A POINTER TO SCRATCH AREA
08900 MOVEI 1,1 ;NO, START AT BLOCK 1
09000 MOVEM 1,BLKNUM ;SET BLOCK NUMBER
09100 >
09200 ENTER CH2,[0
09300 0
09400 0
09500 0]
09600 ERROR <WRONG PASSWORD, PLEASE MOUNT CORRECT UDP>
09700 JRA 16,0(16)
09800
09900 INTFIL: 0 ;INITS DSK
10000 MOVEI REGS
10100 BLT REGS+3
10200 INIT CH2,17
10300 SIXBIT/DSK/
10400 0
10500 ERROR <CAN'T INIT DSK!>
10600 MOVE 0,FILNAM#
10700 MOVEM 0,FN#
10800 MOVE 1,[POINT 7,FN]
10900 INTF3: MOVE 2,[POINT 6,DIR]
11000 SETZM DIR
11100 MOVEI 3,5
11200 INTF1: ILDB 0,1
11300 CAIN 0," "
11400 JRST INTF2
11500 SUBI 0,40
11600 IDPB 0,2
11700 SOJG 3,INTF1
11800 INTF2: HRLZI REGS
11900 BLT 3
12000 JRA 16,0(16)
12100
12200 ;CALL TOTAPE(<ARRAY>,<NO.OF WORDS>) WRITES ON MAGTAPE
12300
12400 TOTAPE: 0
12500 HRRZ 0,0(16)
12600 SUBI 0,1
12700 MOVEM 0,COM
12800 MOVN 0,@1(16)
12900 HRLM 0,COM
13000 OUTPUT CH,COM
13100 STATZ CH,740000
13200 ERROR <MAG TAPE WRITE ERROR>
13300 JRA 16,2(16)
13400
13500 ;CALL GETTAP
13600
13700 GETTAP: 0 ;USES INTAP OR TOTAPE, CH. READS OR WRITES MTA0.
13800 INIT CH,617
13900 SIXBIT/MTA0/
14000 0
14100 ERROR <CAN'T INIT MTA0>
14200 JRA 16,0(16)
14300
14400 ;CALL INTAPE(<ARRAY>,<NO.OF WORDS>) READS MAGTAPE
14500
14600 INTAPE: 0
14700 HRRZ 0,0(16)
14800 SUBI 0,1
14900 MOVEM 0,COM
15000 MOVN 0,@1(16)
15100 HRLM 0,COM
15200 INPUT CH,COM
15300 STATZ CH,740000
15400 ERROR <MAG TAPE READ ERROR>
15500 JRA 16,2(16)
15600
15700 ;CALL TOUDP(<ARRAY>,<NO. OF WORDS>)
15800
15900 TOUDP: 0
16000 HRRZ 0,0(16)
16100 SUBI 0,1
16200 MOVEM 0,COM1
16300 MOVN 0,@1(16)
16400 HRLM 0,COM1
16500 MOVE 0,BLKNUM
16600 CAILE 0,MAXBLK-BLKS+1
16700 ERROR <UDP FULL!>
16800 OUTPUT CH2,COM1
16900 MOVEI 0,BLKS
17000 ADDM 0,BLKNUM
17100 STATZ CH2,740000
17200 ERROR <UDP WRITE ERROR>
17300 JRA 16,2(16)
17400
17500 COM: OCT 0,0
17600 COM1: 0
17700 BLKNUM: 0
17800
17900 ;CALL FINUDP(WORD COUNT)
18000
18100 FINUDP: 0
18200 MOVE 0,@ 0(16)
18300 IFE FILUDP,<
18400 MOVEM 0,[FOO: 0
18500 0 ]
18600 OUTPUT CH2,[IOWD 40,FOO
18700 0 ]
18800 CAIA
18900 >
19000 IFN FILUDP,<
19100 IN CH2,[IOWD 40,UDPBUF
19200 0]
19300 CAIA
19400 ERROR <ERROR IN READING UDP BITMAP!>
19500 MOVEM 0,UDPBUF+21
19600 OUT CH2,[IOWD 40,UDPBUF
19700 0]
19800 JRST FINMUS+1
19900 ERROR <ERROR IN WRITING UDP BITMAP!>
20000 >
20100 ;CALL FINMUS
20200 FINMUS: 0
20300 CLOSE CH2,0
20400 STATZ CH2,740000
20500 ERROR <ERROR AFTER CLOSE>
20600 RELEASE CH2,0
20700 JRA 16,0(16)
20800
20900 FINTAP: 0
21000 CLOSE CH,0
21100 STATZ CH,740000
21200 ERROR <MAG TAPE ERROR AFTER CLOSE>
21300 RELEASE CH,0
21400 JRA 16,0(16)
21500
21600 BACKSP: 0
21700 INIT CH,617
21800 SIXBIT/MTA0/
21900 0
22000 ERROR <CAN'T INIT MTA0>
22100 MTAPE CH,7
22200 JRA 16,0(16)
22300
22400 .ERROR: 0
22500 OUTSTR [ASCIZ/?
22600 /] ;MAKE SURE HE CAN SEE HIS ERROR
22700 OUTSTR @(16) ;OUTPUT ERROR MESSAGE
22800 CALLI 1,12 ;LET USER CONTINUE
22900 JRA 16,1(16)
23000 UDPBUF: BLOCK 40
24000 ;; TITLE NORM ;DEB, 11/13/69
24100
24200 ; CALL NORM(ARRAY,SIZE,FACTOR)
24300 ; UNPACKS 18-BIT SMPLS, NORMALIZES, REPACKS AS 12-BIT SMPLS.
24400 ; ---- 3K OF 18-BIT BECOMES 2K OF 12-BIT
24500 ;****** BE SURE TO SET FACTOR FOR 9-BIT SO MAXAMP IS NOT >255.
24600
24700
24800 INTERNAL NORM
24900
25000 X ← 2 ;LOOP AND INDEX
25100 T ← 3 ;BASE OF IBOTT
25200
25300
25400 NORM: 0
25500 HRR X,0(16)
25600 MOVN T,@1(16)
25700 HRL X,T
25800 HRR T,X
25900 HRLI T,441400 ;FOR 12-BIT. USE 441100 FOR 9-BIT
26000 MOVE 4,@2(16)
26100 FIX 4,212000 ;FOR STANFORD ONLY
26200 ; NEXT IS EXPORT FIX (TO N10:)
26300 ;; FSC 4,21
26400 ;; MULI 4,400
26500 ;; TSC 4,4
26600 ;; EXCH 4,5
26700 ;; ASH 4,-243(5)
26800 N10: HLL 0(2)
26900 MUL 4
27000 IDPB T
27100 HRL 0(2)
27200 MUL 4
27300 IDPB T
27400 AOBJN X,N10
27500 JRST 3(16)
27600 0
27700 ANDCBM 4,-6 ; THESE ARE THE CONSTANTS
27800 ANDCBI 10,-3
27900
28000 END